package com.expert.miniapp.service;

import com.expert.miniapp.dao.Laboratory;
import com.github.pagehelper.PageInfo;
import java.util.List;

/**
 * 实验室业务逻辑接口
 * 提供实验室相关的业务操作方法
 */
public interface LaboratoryService {

    /**
     * 根据实验室ID获取详情
     * @param labId 实验室ID
     * @return 实验室详情，如果不存在则返回null
     */
    Laboratory getLaboratoryById(String labId);

    /**
     * 根据实验室分类获取实验室列表
     * @param category 实验室分类
     * @return 符合分类条件的实验室列表
     */
    List<Laboratory> getLaboratoriesByCategory(String category);

    /**
     * 获取所有实验室（支持分页）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 实验室分页信息
     */
    PageInfo<Laboratory> getAllLaboratories(Integer pageNum, Integer pageSize);

    /**
     * 按权重获取推荐实验室列表（支持分页）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 推荐实验室分页信息
     */
    PageInfo<Laboratory> getRecommendedLaboratories(Integer pageNum, Integer pageSize);

    /**
     * 模糊搜索实验室（支持分页）
     * @param keyword 搜索关键词
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 搜索结果分页信息
     */
    PageInfo<Laboratory> searchLaboratories(String keyword, Integer pageNum, Integer pageSize);
}